package com.bstek.demo.controller;


import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.bstek.demo.entity.User;
import com.bstek.demo.entity.UserMessage;
import com.bstek.demo.service.UserService;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.data.provider.Criteria;
import com.bstek.dorado.data.provider.Page;
/**
 * 用户信息控制层
 * @author lemon
 *
 */
@Component
public class UserController {

	@Autowired UserService userService;
	/**
	 * 获取用户信息 分页 过滤 自定义查询
	 * @author lemon
	 * @param page 分页参数
	 * @param criteria 过滤参数
	 * @param parameter 自定义查询参数
	 */
	@DataProvider
	public void getAll(Page<User> page,Criteria criteria,Map<String,Object> parameter){
		User user = new User();
		if(parameter != null ){
			if(parameter.get("userid")!=null){
				user.setUserid(Integer.parseInt(parameter.get("userid").toString()));
			}
			if(parameter.get("username")!=null){
				user.setUsername(parameter.get("username").toString());
			}
			if(parameter.get("jibu")!=null){
				user.setJibu(parameter.get("jibu").toString());		
			}
			if(parameter.get("password")!=null){
				user.setPassword(parameter.get("password").toString());
			}
			if(parameter.get("email")!=null){
				user.setEmail(parameter.get("email").toString());
			}
		}
		 userService.getAll(page,criteria,user);
	}
	/**
	 * 持久化操作方法
	 * @author lemon
	 * @param users 需要持久化的参数
	 */
	@DataResolver
	public void saveAll(Collection<User> users){
		userService.saveAll(users);
	}
	/**
	 * 按照用户名获取信息
	 * @author lemon
	 * @param username 用户名
	 * @return 返回用户信息
	 */
	@DataProvider
	public Collection<User> getMyInfo(String username){
		Collection<User> result = new ArrayList<>();
		if(username != null){
			User user = userService.getMyInfo(username);
			result.add(user);
		}
		return result;
	}
	/**
	 * 保存用户明细信息
	 * @author lemon
	 * @param user 需要保存的数据信息
	 */
	@DataResolver
	public void saveMessages(Collection<User> user){
		if(user != null){
			userService.saveMessages(user);
		}
	}
	/**
	 * 分页获取用户明细信息
	 * @author lemon
	 * @param page 分页参数
	 */
	@DataProvider
	public void getAllMessage(Page<User> page){
		userService.getAllMessage(page);
	}
	@DataProvider
	public void getAllMessage2(Page<User> page){
		userService.getAllMessage2(page);
	}
	
	/**
	 * 根据用户名获取用户详细信息
	 * @author lemon
	 * @return
	 */
	@DataProvider
	public Collection<UserMessage> getUserMessageByUsername(String username){
		
		return userService.getUserMessageByUsername(username);
	}
}
